package com.syedu.day09;

/**
 * @Description static修饰属性--静态属性的应用之:
 * Java23种设计模式之一: 单例模式
 * 保证某个类的实例在JVM内存中有且只有一份,无论创建多少次对象
 *
 * 优点: 减小系统内存的开销
 *
 * @createTime 2022/3/18 15:53
 * @author Administrator
 */
public class SingletonDemo {
    /**提供静态属性返回当前对象实例*/
    //private static SingletonDemo demo = new SingletonDemo();//饿汉模式单例(积极创建)

    private static SingletonDemo demo;//懒汉模式单例(延迟创建)

    /**私有化构造方法 -- 不让外界来使用new创建对象*/
    private SingletonDemo(){

    }

    /**
     * 提供一个公开静态的方法,返回当前对象的唯一实例
     */
    //饿汉模式
    /*public static SingletonDemo getInstance(){
        return demo;
    }*/

    ///懒汉模式
    public static SingletonDemo getInstance(){
        if(demo == null){
            demo = new SingletonDemo();
        }
        return demo;
    }
}
